package br.com.fafica.sisape.control;

import java.sql.SQLException;
import java.util.ArrayList;

import br.com.fafica.sisape.dao.DAOConsulta;
import br.com.fafica.sisape.dao.DAOMedico;
import br.com.fafica.sisape.model.AgendaConsulta;
import br.com.fafica.sisape.model.Consulta;
import br.com.fafica.sisape.model.Medico;
import br.com.fafica.sisape.repositorioarray.RepositorioAgendaConsulta;
import br.com.fafica.sisape.repositorioarray.RepositorioConsulta;
import br.com.fafica.sisape.repositorioarray.RepositorioMedico;


public class ControllerMedico {
	
	private static Medico logado = new Medico();
	public static String modo = "";
	public static String userLogado;
	
	
	public boolean validarLogin(String usuario, String senha) {
		boolean loginEfetuado = false;
		if (modo.equals("Teste")) {
			RepositorioMedico reporMed = new RepositorioMedico();
			ArrayList lista = reporMed.readMedico();
			Medico medico;
			String user;
			String sen;

			for (int i = 0; i < lista.size(); i++) {
				medico = (Medico) lista.get(i);
				user = medico.getLogin();
				sen = medico.getSenha();
				System.out.println(user);
				System.out.println(sen);
				if (usuario.equals(user)) {
					if (senha.equals(sen)) {
						loginEfetuado = true;
						this.logado = medico;
						userLogado = logado.getNome();
					}
				}
			}
			return loginEfetuado;

		} else if (modo.equals("MySql")) {
			DAOMedico daoMed = new DAOMedico();
			try {
				ArrayList lista = daoMed.readMedico();
				Medico medico;
				String user;
				String sen;

				for (int i = 0; i < lista.size(); i++) {
					medico = (Medico) lista.get(i);
					user = medico.getLogin();
					sen = medico.getSenha();
					if (usuario.equals(user)) {
						if (senha.equals(sen)) {
							loginEfetuado = true;
							this.logado = medico;
							userLogado = logado.getNome();
						}
					}
				}
			} catch (SQLException e) {
				System.out.println(e.getMessage());
			} finally {
				return loginEfetuado;
			}
		} else {
			return loginEfetuado;
		}
	}

	public String usuarioLogado() {

		String nome = this.logado.getNome();
		return nome;
	}

	public Integer codUserLogado() {

		Integer cod = this.logado.getCod();
		return cod;
	}
	
	public void InserirMedico(String nome, String telefone, String crm, String login, String senha) {
		Medico medico = new Medico(nome, telefone, crm, login, senha);
		if (modo.equals("Teste")) {
			RepositorioMedico repoMed = new RepositorioMedico();
			repoMed.createMedico(medico);
		} else if (modo.equals("MySql")) {
			DAOMedico daoMedico = new DAOMedico();
			try {
				daoMedico.createMedico(medico);
			} catch (SQLException e) {
				System.out.println(e.getMessage());
			}
		}
	}

	public ArrayList listarMedicos() {
		ArrayList listaMedicos = new ArrayList<>();
		if (modo.equals("Teste")) {
			RepositorioMedico repoMed = new RepositorioMedico();
			listaMedicos = repoMed.readMedico();
		} else if (modo.equals("MySql")) {
			DAOMedico daoMedico = new DAOMedico();
			try {
				listaMedicos = daoMedico.readMedico();
			} catch (SQLException e) {
				System.out.println(e.getMessage());
			}
		}
		return listaMedicos;
	}

	public void editarMedico(Integer cod, String nome, String telefone,
			String crm) throws SQLException {
		Medico m = new Medico();
		m.setCod(cod);
		m.setNome(nome);
		m.setTelefone(telefone);
		m.setCrm(crm);
		if (modo.equals("Teste")) {
			RepositorioMedico repoMed = new RepositorioMedico();
			repoMed.updateMedico(m);
		} else if (modo.equals("MySql")) {
			DAOMedico daoMedico = new DAOMedico();
			daoMedico.updateMedico(m);
		}
	}

	public void deletarMedico(Integer cod, String nome, String telefone,
			String crm) throws SQLException {
		Medico m = new Medico();
		m.setCod(cod);
		m.setNome(nome);
		m.setTelefone(telefone);
		m.setCrm(crm);
		if (modo.equals("Teste")) {
			RepositorioMedico repoMed = new RepositorioMedico();
			repoMed.deleteMedico(m);
		} else if (modo.equals("MySql")) {
			DAOMedico daoMedico = new DAOMedico();
			daoMedico.deleteMedico(m);
		}
	}
	
	// Consulta
	
	public void InserirConsultas(String dataConsulta,
			String medico, String diagnostico, String tratamento, String dataVolta, Integer codPaciente) {
		Consulta consulta = new Consulta(dataConsulta, medico,
				diagnostico, tratamento, dataVolta);

		if (modo.equals("Teste")) {
			RepositorioConsulta repoCon = new RepositorioConsulta();
			repoCon.createConsulta(consulta, codPaciente);
		} else if (modo.equals("MySql")) {
			DAOConsulta daoConsulta = new DAOConsulta();
			try {
				daoConsulta.createConsulta(consulta, codPaciente, logado.getCod());
			} catch (SQLException e) {
				System.out.println(e.getMessage());
			}
		}
	}

	public ArrayList listarConsultas(Integer codPaciente) {
		ArrayList listaConsulta = new ArrayList<>();

		if (modo.equals("Teste")) {
			RepositorioConsulta repoCon = new RepositorioConsulta();
			listaConsulta = repoCon.readConsulta(codPaciente);
		} else if (modo.equals("MySql")) {
			DAOConsulta daoConsulta = new DAOConsulta();
			try {
				listaConsulta = daoConsulta.readConsulta(codPaciente);
			} catch (SQLException e) {
				System.out.println(e.getMessage());
			}
		}
		return listaConsulta;
	}

	public void editarConsulta(Integer cod, String dataConsulta,
			String tratamento, String medico, String diagnostico,
			String dataVolta, Integer codPaciente) throws SQLException {
		Consulta c = new Consulta();
		c.setCod(cod);
		c.setCodUsuario(codPaciente);
		c.setDataConsulta(dataConsulta);
		c.setTratamento(tratamento);
		c.setDiagnostico(diagnostico);
		c.setDataVolta(dataVolta);

		if (modo.equals("Teste")) {
			RepositorioConsulta repoCon = new RepositorioConsulta();
			repoCon.updateConsulta(c);
		} else if (modo.equals("MySql")) {
			DAOConsulta daoConsulta = new DAOConsulta();
			daoConsulta.updateConsulta(c);
		}
	}

	public void deletarConsuta(Integer cod, String dataConsulta,
			String tratamento, String medico, String diagnostico,
			String dataVolta) throws SQLException {
		Consulta c = new Consulta();
		c.setCod(cod);
		c.setDataConsulta(dataConsulta);
		c.setTratamento(tratamento);
		c.setDiagnostico(diagnostico);
		c.setDataVolta(dataVolta);

		if (modo.equals("Teste")) {
			RepositorioConsulta repoCon = new RepositorioConsulta();
			repoCon.deleteConsulta(c);
		} else if (modo.equals("MySql")) {
			DAOConsulta daoConsulta = new DAOConsulta();
			daoConsulta.deleteConsulta(c);
		}
	}
	// Agenda Consulta
	public void inserirAgendaConsulta(String data, String hora, String medico, String nome) {

		AgendaConsulta agendaConsulta = new AgendaConsulta(data, hora, medico, nome);
		RepositorioAgendaConsulta repoAgendaCon = new RepositorioAgendaConsulta();
		repoAgendaCon.createAgendaConsulta(agendaConsulta);

	}
	
	public ArrayList listarAgendaConsulta(){
		ArrayList lista = new ArrayList<>();
		RepositorioAgendaConsulta repo = new RepositorioAgendaConsulta();
		lista = repo.readAgendaConsulta();
		return lista;
		
	}
	
	public void editarAgendaConsulta(AgendaConsulta agendaConsulta){
		RepositorioAgendaConsulta repo = new RepositorioAgendaConsulta();
		repo.updateAgendaConsulta(agendaConsulta);
	}
	
	public void deletarAgenaConsulta(AgendaConsulta agendaConsulta){
		RepositorioAgendaConsulta repo = new RepositorioAgendaConsulta();
		repo.deleteAgendaConsulta(agendaConsulta);
	}

}
